🦊Wan2.1_VACE
👉 |
ざっくり言えば動画生成におけるControlNet、in/outpainting、reference2video等の動画編集が一つでできるすごいやつです LTX-Video版とWan2.1版がありますが、このページはWan2.1版
参考
⚠️公式のWorkflowの動画保存ノードはパス指定とかすると何故か保存に失敗しがちなので保存時に日付とかで階層保存してる場合はComfyUI-VideoHelperSuiteのVideo Combineノード辺りで保存するほうが良いかもしれない。 モデルのダウンロード
code:model
📂ComfyUI/
└── 📂models/
└── 📂diffusion_models/
└── wan2.1_vace_1.3B_fp16.safetensors
GGUF
code:model
📂ComfyUI/
└── 📂models/
└── 📂unet/
└── Wan2.1-VACE-14B.gguf
推奨設定値
解像度
1.3B : 480P
14B : 720P
32の倍数
フレーム数
最大81f (5秒 × 16fps)
🚨業務連絡
ControlNet(的な)
https://gyazo.com/ef1dae4f7c1fe82cb201e33558c6ca39
ポーズ、深度マップ以外にもscribble、optical_flow、layoutを入力として使用可能
https://gyazo.com/a9d4dd5517455bd85cd700c387c28291https://gyazo.com/8719001c6976f5877eb237bd16df15f1
reference2video
https://gyazo.com/026bb65307ee96b243ccc2625e6d35a5
🟩参照画像をうまく転送するには背景を除去&白で埋める必要があります(今回はBiRefNet) 裏技的に画像周りを白のpaddingで囲むと転送できるというのもあるけど、そんなに上手く行かない
旧 : Split Imagesノードで捨てていたのを変更。latentの状態で捨てたほうがデコードする枚数が減るのでお得
https://gyazo.com/fc3cee85ff8b704a5167d755c7fb51behttps://gyazo.com/ecab1cc0bf40b1cfe1931645a6a219behttps://gyazo.com/d2f6da62385b3687a5603fcd0d4d8cd4
参照画像 / 生成動画 / 初期フレームカット
逆にくり抜かずに画像を渡すと概ねI2Vのようなことができたりします(SkyReels V2 DFと似たような挙動) 🚨このimgae2videoっぽいというのがちょっと大事で、refereceとして入力する画像のサイズ、位置に生成動画が少し引っ張られます
https://gyazo.com/b0806154fa8408fae52ea15ac05d1ec9https://gyazo.com/88e1a10df4fb53d9791a9cfbe741f66c
これは単純にミスしただけなのだけど、生成動画の設定を横長にしたのに、正方形のままreference画像を入力したので上下がクロップされました
その結果耳がちょん切れてしまい、生成された動画もドラえもんみたいな惨状になっています
複数のreference
https://gyazo.com/59d9e0ab34e25ae365fa6b63cc6d356e
🟪14Bモデル(fp8)
referenceを使うときは1.3Bだとまともな動画が作れない気がするnomadoor.icon
🟩複数の参照画像を使いたいときは、単に横並べした画像を作り、それをreference_imageに入力します
🟨参照画像が一枚のときと同様、出力するときの解像度に合わせ、参照画像がクロップされてはみ出ないようにします
https://gyazo.com/2c745f54cc9d62bd97a85f6fd102fe27
空間的なinpainting
どっちでもそんなに変わらないけどね…nomadoor.icon
https://gyazo.com/516fed114e2f9cd247eed1d9a3c82770
🟪14Bモデル
https://gyazo.com/cabe695d49f5f8cca4c1dfbe4bc8498chttps://gyazo.com/747858b1a359aef22a17eb06d07625b4https://gyazo.com/75c4eb2779be2373467eef6de9d5b330
空間的なoutpainting
https://gyazo.com/b3775e8e75ff61ae0d87dcd3b43028d1
静止画でのoutpaintingと同様、追加したマスク部分を埋める様に動画生成します
🟩ImagePad KJノードでpaddingを追加された画像と、追加したマスクをWanVaceToVideoノードに接続します
🟩WanVaceToVideoノードに入れるときに解像度を32の倍数にしないといけないので注意
https://gyazo.com/29427b96c53a2fdac8c18d634287fda9https://gyazo.com/5414ecc07ec5ce04ac5fff74d5ab2ba2
時間的なoutpainting (Extension)
入力動画の最初のNフレームのみ使用し、続きを生成させます
もちろん、1フレームのみ使い続きを生成することもできます
https://gyazo.com/ee3739958e95c68676cd003cf7753ce1
🟩ImageFromBatchノードによって、入力動画の最初の10フレームのみWanVaceToVideoに入力
🟩Create Fade Mask Advancedノードによって、11~最終フレームまで画面全部を覆うマスクを作成し入力
https://gyazo.com/b647967a0b425e706312b432023b4599https://gyazo.com/ec84d51f29f68d95e0743b061a46b993
入力 / 11フレーム以降はExtension(プロンプトに従って動画拡張)
WanVaceToVideoのcontrol_videoのややこしいと思ったところnomadoor.icon
通常inpaintingは、"完全な元画像"とマスクを渡すけれど、入力された動画自体が仮にポーズやDepthで無くても何かしらのガイドとしてVACEが使ってしまうため、マスクの部分を白で埋めるか、Depthやらなにやらで埋めないといけない
Extensionも同様に、使わない部分は消さないと余計なガイドとして働いてしまう
🤝組み合わせる
FaceSwap (ControlNet Depth + inpainting + reference)
https://gyazo.com/6e277ec8a8f460881c6a5fad8139a997
🟩顔部分をSimple Detectorでマスク
🟩Depth Anything v2で深度マップ作成
上2つを合わせ、顔部分を深度マップに置き換えたものをcontrol_videoとして使用
🟦顔画像を切り抜きし背景を白で埋め、 control_videoと同じサイズになるようpadding
https://gyazo.com/1638fcf19f3e8c71d386709deac0267chttps://gyazo.com/a6a17f1fc166aef0a4a05018078834a1https://gyazo.com/54019604f8dc586b73d4e0b84fc4e35ehttps://gyazo.com/4f83fdcc9615e85248585f2936ec3fb6
元動画 / 顔部分を深度マップに置き換え / 参照画像 / 出力
レイアウトコントロール (Control Layout + Extension + reference)
https://gyazo.com/65b21058c47ff66052a8797bb412d25b
🟨続きを作ってほしい画像1フレーム + レイアウトを指定するボックスアニメーションを合体させて一つの動画に
これをcontrol videoに入力
referenceとしても画像を入力
無くてもよいはずだけど、無いときよりキャラが安定した
🟩2フレーム目からをExtensionしてほしいので、2フレーム目以降を全面マスクで埋める
🟥referenceを使ったので初期重なり部分を削除
https://gyazo.com/f2679feede8fc08cd448e86ceed30ee9https://gyazo.com/d1d90dab2f79b662582d81845e6257fc
🟩ちなみにマスクが無くても問題なく動画の生成はできるけれど、入力した画像のディテールが失われてしまう
https://gyazo.com/51a0a8f21ecbeb3e8e324fdc1c8b653d
白黒のボックスアニメーションを作るのに特化したサイト
黒背景に白ボックスの方が良いらしいnomadoor.icon
中割り
https://gyazo.com/9cb508fbbc705b2719e6c66a813bf17e
つなぐ・ループ
https://gyazo.com/d2b6874f4fea944fd8ddf8fd0d4ed5b9
メモ書き
極論してしまうと、通常のWan2.1 T2Vとの違いは下記のWanVaceToVideoの存在。これ無しで生成するとほぼ通常のWan2.1 T2Vと同じ挙動をする。
https://gyazo.com/1db78f818f794051f6e00f163b2e6a06
多分このノードでControlや参照画像を潜在空間にモデルが理解できるように落とし込んでいる?
挙動を見る限り、考え方としてVACEはマスクに対していわゆる「グリーンバック合成」的な考え方に近そう(グリーンバックが緑を透明にするのに対してVACEはホワイトバックとでも言うべきマスクを生成して補完する)
普通にinpaintingのマスクと同じ様に、画面全体に合うようにマスクの部分だけ生成するよ~で良いと思うnomadoor.icon
VACEでReference機能を使うときのみ最低5(4 +1)枚いるnomadoor.icon